package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * 泛型
 * 1.JDK1.5时推出了一个新特性：泛型（Generic）
 * 2.泛型也称参数化类型（规定类型），允许我们在使用一个类的时候，传入某个引用类型来规定内部的属性、方法以及返回值类型
 *   泛型在集合当中是被广泛使用的，用来指定集合中元素的类型
 *   若不指定泛型的具体类型，则默认使用OBject，在获取泛型值的同时，编译器会主动发生强制类型转换
 * */
public class GenericDemo {
    public static void main(String[] args) {
        //任务：写一个String类型的集合，用来存放one、two、three、four、five字符串
        Collection<String> c1 = new ArrayList<>();
        c1.add("one");
        c1.add("two");
        c1.add("three");
        c1.add("four");
        c1.add("five");
        System.out.println(c1);

        //任务：写一个可以装浮点类型数据的集合
        Collection<Double> c = new ArrayList<>();
        c.add(1.2);
        c.add(2.3);
        c.add(3.4);
        c.add(4.5);
        System.out.println(c);

        //迭代器的泛型必须和对应集合的泛型保持一致
        Iterator<Double> it = c.iterator();
        while (it.hasNext()){
            double d = it.next(); //指定泛型后不再需要强制类型转换
            System.out.println(d);
        }
    }
}
